import java.util.Arrays;
import java.util.Scanner;

// 定义接口 IntegerStack
interface IntegerStack {
    public Integer push(Integer item); // 入栈
    public Integer pop();              // 出栈
    public Integer peek();             // 获取栈顶元素
    public boolean empty();            // 判断是否为空
    public int size();                 // 返回栈中元素个数
}

// 定义实现类 ArrayIntegerStack
class ArrayIntegerStack implements IntegerStack {
    private Integer[] array;  // 内部数组
    private int top;          // 栈顶指针，指向下一个插入位置
    private int capacity;     // 数组容量

    // 构造方法，初始化数组和容量
    public ArrayIntegerStack(int capacity) {
        this.capacity = capacity;
        this.array = new Integer[capacity];
        this.top = 0;
    }

    @Override
    public Integer push(Integer item) {
        if (item == null || top == capacity) { // 如果item为null或栈满
            return null;
        }
        array[top++] = item; // 入栈并移动栈顶指针
        return item;
    }

    @Override
    public Integer pop() {
        if (top == 0) { // 如果栈为空
            return null;
        }
        return array[--top]; // 移动栈顶指针并返回栈顶元素
    }

    @Override
    public Integer peek() {
        if (top == 0) { // 如果栈为空
            return null;
        }
        return array[top - 1]; // 返回栈顶元素
    }

    @Override
    public boolean empty() {
        return top == 0; // 判断是否为空
    }

    @Override
    public int size() {
        return top; // 返回栈中元素个数
    }

    // 获取内部数组（用于输出）
    public Integer[] getArray() {
        return array;
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 输入 n，创建容量为 n 的 ArrayIntegerStack 对象
        int n = scanner.nextInt();
        ArrayIntegerStack stack = new ArrayIntegerStack(n);

        // 输入 m 个值，均入栈
        int m = scanner.nextInt();
        for (int i = 0; i < m; i++) {
            Integer value = scanner.nextInt();
            System.out.println(stack.push(value)); // 打印入栈结果
        }

        // 输出栈顶元素、是否为空、栈大小
        System.out.printf("%d,%b,%d\n", stack.peek(), stack.empty(), stack.size());

        // 使用 Arrays.toString() 输出内部数组中的值
        System.out.println(Arrays.toString(stack.getArray()));

        // 输入 x，出栈 x 次
        int x = scanner.nextInt();
        for (int i = 0; i < x; i++) {
            System.out.println(stack.pop()); // 打印出栈结果
        }

        // 输出栈顶元素、是否为空、栈大小
        System.out.printf("%d,%b,%d\n", stack.peek(), stack.empty(), stack.size());

        // 使用 Arrays.toString() 输出内部数组中的值
        System.out.println(Arrays.toString(stack.getArray()));
    }
}